嗨大家好我是Andy,今天我們繼續來複習之前有調用的函數,廢話不多說我們直接進入主題。
字面上的意思透過Pid獲取線程的句柄
程式碼的部分是
HANDLE OpenProcess=(dwDesiredAccess,bInheritHandle,Pid);
dwDesiredAccess是Microsoft定義的主要是管理存取的權限,如果是要所有存取省麻煩的話就使用PROCESS_ALL_ACCESS
bInheritHandle在Mircosoft定義中只有true和false,如果使用的是true那Handle將會繼承該線程,所以這邊我們在一開始的時候就使用False
Pid當然就是線程被工作管理員分配的一個數字,可以在工作管理員詳細資料裡面查看
這個函數是申請一個位址給dll,所以只有會再注入中有,卸除的部分不會有VirtualAllocEx
程式長這樣
LPVOID VirtualAllocEx(
HANDLE hProcess,
LPVOID lpAddress,
SIZE_T dwSize,
DWORD flAllocationType,
DWORD flProtect
);
這是使用OpenProcess拿的句柄不是LoadLibrary獲取的句柄
這個的定義是保存位址,但是通常都使用NULL讓它自動分配
在一開始我們是使用strlen(Path)+1,這個就是要分配的內存大小
strlen計算字符串
在Mircosoft定義的是記憶體位址的存取
有興趣的話可以去看一下點我點我
這個我們之前沒有使用到,但在這邊簡單做介紹主要是做讀寫的權限規範(目前看Mircosoft 參數定義)
在之前可能不太懂每個參數的用意,所以一個一個看Mircosoft網站上面的定義,因為感覺只記程式怎麼打最後學一學還是會忘記,那我們今天先到這裡,我們明天見。雙十節要來啦啦啦啦啦啦啦啦啦啦啦啦啊啦啦啊啦啦啦啦啦啦